package com.jxt.app.service.impl;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.jxt.app.dao.ApnewsDAO;
import com.jxt.app.dao.base.ApdeptDAO;
import com.jxt.app.dao.base.AproleDAO;
import com.jxt.app.dao.base.ApusersDAO;
import com.jxt.app.entity.Apnews;
import com.jxt.app.entity.ApnewsExample;
import com.jxt.app.entity.base.Apdept;
import com.jxt.app.entity.base.ApdeptExample;
import com.jxt.app.entity.base.Aprole;
import com.jxt.app.entity.base.AproleExample;
import com.jxt.app.entity.base.Apusers;
import com.jxt.app.entity.base.ApusersExample;
import com.jxt.app.entity.extend.ApUserExtend;
import com.jxt.app.service.ApUserService;
import com.jxt.app.service.BaseService;
import com.jxt.app.service.NewsService;
import com.jxt.app.util.Page;

@Service
public class ApUserServiceImpl  implements ApUserService {

	@Autowired
	private ApusersDAO apusersDAO;
	@Autowired
	private AproleDAO aproleDAO;
	@Autowired
	private ApdeptDAO apdeptDAO;

	@Override
	public int deleteModel(ApusersExample record) {
		// TODO Auto-generated method stub
		
		return apusersDAO.deleteByExample(record);
	}

	@Override
	public Page findListByExample(ApusersExample inparam, int page, int num)
			throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Apusers getModelById(long id) {
		// TODO Auto-generated method stub
		return apusersDAO.selectByPrimaryKey((int)id);
	}

	@Override
	public int insertModel(Apusers record) {
		// TODO Auto-generated method stub
		apusersDAO.insert(record);
		return 0;
	}

	@Override
	public List<Apusers> listModel(ApusersExample example) {
		// TODO Auto-generated method stub
		return apusersDAO.selectByExample(example);
	}

	@Override
	public int updateModel(ApusersExample record) {
		// TODO Auto-generated method stub
		return apusersDAO.updateByPrimaryKey(record);
	}

	public List<Apdept> selecMyVisibleApdept(int deptid) {
		ApdeptExample adptExmaple=new ApdeptExample();
		adptExmaple.setBelongId(String.valueOf(deptid));
		adptExmaple.setBelongId_Indicator(ApdeptExample.EXAMPLE_EQUALS);

		List<Apdept> deptList=apdeptDAO.selectByExample(adptExmaple);
		
		return deptList;
		
	}
	@Override
	public List<Apusers> selecMyVisibleUsers(int deptid) {
		// TODO Auto-generated method stub
//		AproleExample example=new AproleExample ();
//		example.setId(Integer.parseInt("2"));
//		example.setId_Indicator(AproleExample.EXAMPLE_EQUALS);
		
		ApusersExample userExample=new ApusersExample();
		userExample.setUserDept(String.valueOf(deptid));
		userExample.setUserDept_Indicator(ApusersExample.EXAMPLE_EQUALS);
		
		List<Apusers> userList= apusersDAO.selectByExample(userExample);
	
		//获得用户角色
//		Aprole role=aproleDAO.selectByPrimaryKey(Integer.parseInt("2"));
//		Apdept dept=apdeptDAO.selectByPrimaryKey(Integer.parseInt("2"));
		// 加载角色树
		//List<Aprole> roleList=loadRoleTree(role.getId());
		
		//ApusersExample exmaple1=setRoleExample(role);
		//ApusersExample exmaple2=setDeptExample(dept);
		//List<Apusers> userList=apusersDAO.selectByExample(exmaple2);
		
//		List<Apusers> visibleUser=new ArrayList<Apusers>();
		
		//查询部门
//		for(int i=0;i<dept.getSubdeptlist().size();i++){
//			Integer id=dept.getSubdeptlist().get(i).getId();
//			setDeptExample(dept.getSubdeptlist().get(i));
//		}
		
//		//再次过滤角色
//		for(Apusers user:userList){
//			
//			if(user.getUserrole().equals(String.valueOf(b))){
//				
//				
//			}
//			
//			
//		}
		
		return userList;
	}
	
	private ApusersExample setRoleExample(Aprole role){
		
		ApusersExample userExample=new ApusersExample();
		for(int i=0;i<role.getSubrolelist().size();i++){
			Integer id=role.getSubrolelist().get(i).getId();
			userExample.setUserrole(String.valueOf(id));
			userExample.setUserrole_Indicator(ApusersExample.EXAMPLE_EQUALS);
			userExample.setCombineTypeOr(true);
			setRoleExample(role.getSubrolelist().get(i));
		}
		return userExample;
	}
	
	private ApusersExample setDeptExample(Apdept role){
		
		ApusersExample userExample=new ApusersExample();
		for(int i=0;i<role.getSubdeptlist().size();i++){
			Integer id=role.getSubdeptlist().get(i).getId();
			userExample.setUserDept(String.valueOf(id));
			userExample.setUserDept_Indicator(ApusersExample.EXAMPLE_EQUALS);
			userExample.setCombineTypeOr(true);
			setDeptExample(role.getSubdeptlist().get(i));
		}
		return userExample;
	}
//	
//	/**
//	 * 递归装配i角色树
//	 * @param id
//	 * @return
//	 */
//	private List<Aprole> loadRoleTree(int id){
//		AproleExample example=new AproleExample ();
//		example.setBelongRole(id);
//		example.setBelongRole_Indicator(AproleExample.EXAMPLE_EQUALS);
//		List<Aprole> roleList=aproleDAO.selectByExample(example);
//		for(int i=0;i<roleList.size();i++){
//			Aprole role=roleList.get(i);
//			List<Aprole> subrolelist=loadRoleTree(role.getId());
//			role.setSubrolelist(subrolelist);
//		}
//		return roleList;
//	}
//
//	private List<Apdept> loadDeptTree(int id){
//		ApdeptExample example=new ApdeptExample ();
//		example.setBelongId(String.valueOf(id));
//		example.setBelongId_Indicator(ApdeptExample.EXAMPLE_EQUALS);
//		List<Apdept> deptList=apdeptDAO.selectByExample(example);
//		for(int i=0;i<deptList.size();i++){
//			Apdept dept=deptList.get(i);
//			List<Apdept> subdeptlist=loadDeptTree(dept.getId());
//			dept.loadDeptTree(dept.getBelongId());
//		}
//		return deptList;
//	}
	
	
//	@Override
//	public Page findListByExample(ApusersExample inparam, int page, int num)
//			throws Exception {
//		// TODO Auto-generated method stub
//		
//		Page result = new Page();
//
//		try {
//			/**
//			 * 获取总记录条数
//			 */
//			int rowcount = ApusersDAO.findCountByExample(inparam);
//			/**
//			 * 当没有符合查询条件的结果集时
//			 */
//			if (rowcount <= 0) {
//				result.setCurPageNum(1);
//				result.setPageCount(1);
//				result.setResult(new ArrayList());
//				result.setRowCount(0);
//				result.setRowCountPerPage(num);
//				return result;
//			}
//			/**
//			 * 总页数
//			 */
//			long pagecount = 0;
//			if (rowcount % num == 0) {
//				pagecount = rowcount / num;
//			} else {
//				pagecount = rowcount / num + 1;
//			}
//			/**
//			 * 根据总页数调整当前页码位置
//			 */
//			if (page <= 1) {
//				page = 1;
//			} else if (page > pagecount) {
//				page = (int) pagecount;
//			}
//
//			Integer start = (page - 1) * num+1;
//			Integer end = page * num;
//
//			/**
//			 * 获取结果集
//			 */
//			HashMap<String, Object> param = new HashMap<String, Object>();
//			param.put("object", inparam);
//			param.put("page", page);
//			param.put("page_begin", start);
//			param.put("page_end", end);
//			List<?> list = ApusersDAO.findListByExample(param);
//
//			result.setCurPageNum(page);
//			result.setPageCount(pagecount);
//			result.setResult((ArrayList<?>) list);
//			result.setRowCount(rowcount);
//			result.setRowCountPerPage(num);
//
//		} catch (Exception e) {
//			// logger.error(e);
//			throw e;
//		}
//
//		return result;
//	
//	}


}
